package coml.jiyun.hp.reviewtopic.base;

import android.app.Application;
import android.database.sqlite.SQLiteDatabase;

import coml.jiyun.hp.reviewtopic.db.DaoMaster;
import coml.jiyun.hp.reviewtopic.db.DaoSession;

/**
 * 1.基类:
 * BaseActivity(设置布局,initView,initData,初始化P并且关联,界面销毁),
 * BasePresenter:初始化M,持有V层对象,界面销毁的时候可以收到通知通知M层
 * BaseModel:收到P层发送的界面销毁通知,取消网络请求
 * BaseFragment:
 * BaseLazyFragment:
 * BaseAdapter:
 * 2.网络框架: Rxjava+Retrofit+Ok(日志拦截器,缓存拦截器,请求头...)
 * 3.工具类:ToastUtil,打印,dp2px,px2dp,网络状态
 *
 *
 * youmeng:5f27ad1bb4b08b653e90a1cb
 *
 * baidumap ak :ykdxyeMPa2e3HVvkVtEV2cVYYf8FlPwT
 *
 * 极光 ak: 0920e9b7c14d12d1282a1e1f
 *
 *
 * 月活(月活跃用户) >=1000
 * 日活(日活跃用户) 1000
 */
public class BaseApp extends Application {
    public static BaseApp sBaseApp;

    private DaoMaster.DevOpenHelper mHelper;
    private DaoMaster mDaoMaster;
    private DaoSession mDaoSession;



    @Override
    public void onCreate() {
        super.onCreate();
        sBaseApp = this;
        setDatas();

    }

    private void setDatas() {
        //通过DaoMaster内部类DevOpenHelper可以获取一个SQLiteOpenHelper 对象
        // 可能你已经注意到了，你并不需要去编写「CREATE TABLE」这样的 SQL 语句，因为 greenDAO 已经帮你做了。
        // 注意：默认的 DaoMaster.DevOpenHelper 会在数据库升级时，删除所有的表，意味着这将导致数据的丢失。
        // 所以，在正式的项目中，你还应该做一层封装，来实现数据库的安全升级。
        // 此处MyDb表示数据库名称 可以任意填写
        mHelper = new DaoMaster.DevOpenHelper(this, "MyDb", null);    // MyDb是数据库的名字，更具自己的情况修改
        SQLiteDatabase db = mHelper.getWritableDatabase();
        mDaoMaster = new DaoMaster(db);
        mDaoSession = mDaoMaster.newSession();
    }

    public static BaseApp getInstance(){
        return sBaseApp;
    }

    public DaoSession getDaoSession(){
        return mDaoSession;
    }

}
